// pages/car/car.js
Page({
  handleClickState(e) {
    // 1. 获取点击的数据
    const item = e.target.dataset.item;
    // 2. 获取购物车数据
    const carList = this.data.carList;
    // 3. 去购物车查找数据
    const data = carList.find(v => v.id === item.id)
    // 4. 修改状态
    data.state = !data.state
    // 5. 更新页面数据
    this.setData({
      carList: [...this.data.carList]
    })
    // 6. 更新本地存储
    wx.setStorageSync('carList', this.data.carList)
    // 7. 计算总价
    this.computedAllPrice()
    //  8. 计算全选状态
    this.computedAllState()
  },
  handleClickAddCount(e) {
    // 1. 获取点击的数据
    const item = e.target.dataset.item;
    // 2. 获取购物车数据
    const carList = this.data.carList;
    // 3. 去购物车查找数据
    const data = carList.find(v => v.id === item.id)
    // 4. 修改数量
    data.count++
    // 5. 更新页面数据
    this.setData({
      carList: [...this.data.carList]
    })
    // 6. 更新本地存储
    wx.setStorageSync('carList', this.data.carList)
    // 7. 计算总价
    this.computedAllPrice()
  },
  handleClickSubCount(e) {
    // 1. 获取点击的数据
    const item = e.target.dataset.item;
    // 2. 获取购物车数据
    const carList = this.data.carList;
    // 3. 去购物车查找数据
    const data = carList.find(v => v.id === item.id)
    // 4. 修改数量
    data.count--
    // 5. 更新页面数据
    this.setData({
      carList: [...this.data.carList]
    })
    // 6. 更新本地存储
    wx.setStorageSync('carList', this.data.carList)
    // 7. 计算总价
    this.computedAllPrice()
  },
  handleChangeAllState() {
    // 1. 循环修改所有状态
    this.data.carList.forEach(v => {
      // 每一个的状态 等于 全选的状态取反
      v.state = !this.data.allState
    })
    // 2. 更新试图
    this.setData({
      carList: [...this.data.carList]
    })
    // 3. 本地存储
    wx.setStorageSync('carList', this.data.carList)
    // 2. 计算总价和状态
    this.computedAllState();
    this.computedAllPrice()
  },
  // 计算所有价钱
  computedAllPrice() {
    // 总价
    let price = 0
    // 循环每一项
    this.data.carList.forEach(v => {  
      //判断下是否选中， 
      if(v.state) {
        // 选中 就累加 单价 * 数量
        price += v.price * v.count
      }
    })
    // 设置总价
    this.setData({
      allPrice: price
    })
  },
  // 计算全选选中
  computedAllState() {
    const allState = this.data.carList.every(v => {
      // 返回值 全真则真
      return v.state
    })
    this.setData({
      allState: allState
    })
  },
  /**
   * 页面的初始数据
   */
  data: {
    carList: wx.getStorageSync('carList') || [],
    allPrice: 0,
    allState: false
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) { 
    this.computedAllPrice();
    this.computedAllState();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})